package com.atguigu.bigdata.scala.chapter07

object Scala10_Collection_Method_5 {

    def main(args: Array[String]): Unit = {

        // TODO 集合 - 功能方法
        val list = List(
            List(1,2),List(3,4)
        )
        val list1 = List(
            List(
                List(1,2), List(3,4)
            ),List(
                List(5,6), List(7,8)
            )
        )

        // TODO 扁平化 flatten
        // 将嵌套集合拆分开，只保留最外层的集合，嵌套集合不想用了。只想用嵌套集合的数据
        // 将一个整体拆分成一个一个的元素来使用，称之为扁平化
        // flatten只能拆除一层整体，如果存在多层嵌套，那么需要多次调用
        //println(list.flatten)
        //println(list1.flatten.flatten)

        // 分词 ： "Hello Scala World"
        //        "Hello", "Scala", "World"
        val list2 = List("Hello Scala World")

        // 扁平化是将集合中的每一个元素进行拆分
        // flatten默认情况下会将字符串当成char数组来使用，所以会拆分成一个一个的字符。
        println(list2.flatten)
        // 可以将map和flatten合二为一，实现自定义扁平化操作
        // TODO flatMap
        // flatMap就是将集合中的每一个元素获取到，然后进行自定义的扁平化操作（拆分）
        // 既然是拆分，所以应该返回的结果为可迭代的集合
        val list3 = list2.flatMap(
            s => {
                // 自定义拆分逻辑
                s.split(" ")
            }
        )
        println(list3)

        val list4 = List(
            "Hello Scala World", // Hello, Scala, World
            "Spark Flink Hive",  // Spark, Flink, Hive
        )

        // Hello, Scala, World, Spark, Flink, Hive
        val list5 = list4.flatMap(
            s => {
                s.split(" ")
            }
        )
        println(list5)



    }
}
